사용자 관리
✒️ 2025-06-02 13:40 내용 수정
사용자와 그룹 생성
1. 사용자 생성
- DDL(Data Definition Language)의
CREATE를 사용하여 사용자을 생성할 수 있다.- 사용자 생성 시 비밀번호를 지정할 수 있다.
CREATE ROLE 사용자 WITH LOGIN PASSWORD 비밀번호;
CREATE ROLE developer WITH LOGIN PASSWORD '1234';

2. 그룹 생성
CREATE ROLEDDL을 사용하여 사용자를 추가한 것처럼 그룹을 추가할 수 있다.GRANT로 사용자에게 그룹을 부여할 수 있다.
CREATE ROLE 그룹이름;
GRANT 그룹이름 TO 사용자;
CREATE ROLE developer_group;
GRANT developer_group TO developer;

3. 다른 사용자로 접속
- psql 기준으로
\c명령어로 접속할 DB와 사용자 계정을 선택한다.
\c DB이름 사용자이름
사용자암호

테이블에 사용자 접근 권한 추가
- 임의의 테이블을 먼저 생성한다.
CREATE TABLE employee (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
salary NUMERIC(10, 2),
department TEXT
);
- 처음 생성한 사용자는 다른 테이블이나 DB에 접근할 권한이 부여되지 않은 상태다.
- 슈퍼 유저(관리자) 권한으로 특정 사용자에게
GRANT로 DB 및 테이블 접근 권한을 추가한다.- 권한 설정 SQL은 DCL(Data Control Language)을 사용한다.
- 타입을
SERIAL로 설정하여 생성된 테이블의 SEQUENCE에 대해서도 접근 권한이 있어야 데이터를 넣을 수 있다.
GRANT 동작 ON 테이블 TO 사용자;
GRANT SELECT, INSERT, UPDATE, DELETE ON employee TO developer;
-- 모든 권한 부여
GRANT ALL PRIVILEGES ON employee TO developer;
GRANT ALL PRIVILEGES ON employee TO developer_seq_id;

- psql 기준으로
\z 테이블이름명령어로 테이블의 엑세스 권한을 확인할 수 있다.
\z 테이블이름

권한 제거
- 사용자의 권한을 제거할 때는
REVOKE를 사용한다.
REVOKE 동작 ON 테이블이름 FROM 사용자;
REVOKE ALL ON employee FROM developer;
\z 테이블이름으로 테이블의 엑세스 권한을 다시 확인하여 사용자의 테이블 권한이 제거되었는지 확인한다.
